package com.tyk.bookstore.front.member.service;


import com.tyk.bookstore.front.common.other.code.behavior.model.enume.SceneType;
import com.tyk.bookstore.front.member.model.query.*;
import com.tyk.bookstore.front.member.model.vo.MemberVo;
import org.springframework.web.multipart.MultipartFile;

public interface MemberCenterService {

    /**
     * 已登录：发送手机验证码(含行为验证码校验)
     *
     * @param query 参数
     * @return 消息验证码凭证
     */
    String sendMsgCodeWithBehaviorCheck(MsgCodeSendWithBehaviorCheckLoggedQuery query, SceneType scene);

    /**
     * 发送手机验证码(个人中心,新手机号/邮箱,不校验行为验证码)
     *
     * @param query 参数
     * @return 消息验证码凭证
     */
    String sendMsgCodeNotRegistered(MsgCodeSendNotRegisteredQuery query, SceneType scene);

    /**
     * 校验消息验证码
     *
     * @param query 参数
     * @param scene 场景
     * @return 消息验证码校验通过凭证
     */
    String checkMsgCode(MsgCodeCheckLoggedQuery query, SceneType scene);


    /**
     * 更新手机号
     *
     * @param query 更新手机号参数
     */
    void updatePhone(PhoneUpdateQuery query);


    /**
     * 更新邮箱
     *
     * @param query 参数
     */
    void updateEmail(EmailUpdateQuery query);

    /**
     * 更新登录密码
     *
     * @param query 参数
     */
    void updateLoginPassword(LoginPasswordUpdateQuery query);

    /**
     * 更新支付密码
     *
     * @param query 参数
     */
    void updatePayPassword(PayPasswordUpdateQuery query);


    /**
     * 更新身份证
     *
     * @param query 参数
     */
    void updateIdCard(IdCardUpdateQuery query);


    /**
     * 更新头像
     *
     * @param file 头像文件
     */
    String updateAvatar(MultipartFile file);


    /**
     * 获取个人信息
     */
    MemberVo getMember();


    /**
     * 更新个人信息
     *
     * @param query 参数
     */
    void updateMember(MemberUpdateQuery query);


}
